package com.im.service.projectInfo.smo;

import javax.servlet.http.HttpServletRequest;

import com.im.service.dto.DocInfo;
import com.im.service.dto.ImplementProject;
import com.im.service.dto.PlanDeclareSet;
import com.im.service.dto.PlanProject;
import com.im.service.dto.ProjProceSubmit;
import com.im.service.dto.ProjectStage;
import com.im.service.dto.StageNode;
import com.im.viewmodel.projectInfo.ProjectSetProgressAddReqVo;

/**
 * 
 * 项目信息管理 事务操作SMO
 * @author xuwb
 * 2018年3月23日
 */
public interface IProjectInfoOperSMO {
	
	/**
	 *
	 * 新增规划工程项目信息.
	 * @throws Exception
	 */
	void addPlanProject(PlanProject planProject) throws Exception;
	
	/**
	 * 更新规划工程项目信息
	 * @param planProject
	 * @return
	 * @throws Exception
	 */
	void updatePlanProject(PlanProject planProject) throws Exception;

	/**
	 * 删除规划工程信息
	 * @param planProject
	 */
	void deletePlanProj(PlanProject planProject);
	
	/**
	 * 
	 * 新增实施工程项目信息.
	 * @param implProj 
	 */
	void addImplementProj(ImplementProject implProj) throws Exception;
	
	/**
	 * 更新实施工程项目信息
	 * @param implProj
	 */
	void updateImpleProj(ImplementProject implProj);

	/**
	 * 删除实施工程信息
	 * @param implProj
	 */
	void deleteImpleProj(ImplementProject implProj);

	/**
	 * 
	 * 新增项目阶段 
	 * @param projStage 
	 */
	void addProjStage(ProjectStage projStage);
	
	/**
	 * 阶段附件上传
	 * @param projStage
	 * @author xuwenbo
	 */
	void uploadProjStageFile(ProjectStage projStage);
	
	/**
	 * 
	 * 项目阶段编辑. 
	 * @param projStage 
	 */
	void updateProjStage(ProjectStage projStage);

	/**
	 * 新增项目阶段节点信息
	 * @param stageNode
	 */
	void addStageNode(StageNode stageNode);

	/**
	 * 新增文档信息
	 * @param docInfo
	 */
	void addDocInfo(DocInfo docInfo,HttpServletRequest request);

	/**
	 * 填报项目进度设定---新增
	 * @param addReqVo
	 */
//	void addProjPlanDeclareSet(ProjectSetProgressAddReqVo addReqVo);
	
	/**
	 * 填报项目进度设定---修改
	 * @param addReqVo
	 * @author xuwenbo
	 */
	void updateProjPlanDeclareSet(ProjectSetProgressAddReqVo addReqVo);

	/**
	 * 填报项目进度设定---删除
	 * @param planDs
	 * @author xuwenbo
	 */
	void deleteProjPlanDeclareSet(PlanDeclareSet planDs);

	/**
	 * 项目进度报送---修改
	 * 没有记录时add，有则update
	 * @param projProceSubmit
	 * @author xuwenbo
	 */
	void updateProjProceSubmit(ProjProceSubmit projProceSubmit,HttpServletRequest request);

	

}
